package models

// AlarmConfig 告警配置
type AlarmConfig struct {
	Id            int64  `json:"id" `
	CollectItemId int64  `xorm:"collect_item_id" json:"collect_item_id"`
	Measurement   string `xorm:"measurement" json:"measurement"`
	Field         string `xorm:"field" json:"field"`

	Name            string `xorm:"name" json:"name"`
	Enable          bool   `xorm:"enable" json:"enable"`
	Description     string `xorm:"description" json:"description"`
	AlarmWindowSize int64  `xorm:"alarm_window_size" json:"alarm_window_size"`
}

// AlarmWindowSizeActual 需要考虑延迟问题
func (c AlarmConfig) AlarmWindowSizeActual() int64 {
	return c.AlarmWindowSize + 5
}

func (AlarmConfig) TableName() string {
	return "alarm_flow.alarm_config"
}

// AlarmCondition 告警条件
type AlarmCondition struct {
	Id            int64 `json:"id"`
	AlarmConfigId int64 `xorm:"alarm_config_id" json:"alarm_config_id"`

	Level    string `xorm:"level" json:"level"`
	Operator string `xorm:"operator" json:"operator"`
	Value    string `xorm:"value" json:"value"`
}

func (AlarmCondition) TableName() string {
	return "alarm_flow.alarm_condition"
}
